package com.cj.DesignMode.single;

import com.cj.DesignMode.single.ehan.Singleton;

/**
 * 单例模式,私有化构建方法，每次创建的都是同一个对象。
 * 1、懒汉式，线程不安全
 * 2、懒汉式，线程安全
 * 3、饿汉式
 * 4、双检锁/双重校验锁（DCL，即 double-checked locking）
 * 5、登记式/静态内部类
 * 6、枚举
 */
public class SingletonPatternDemo {
   public static void main(String[] args) {
 
      //不合法的构造函数
      //编译时错误：构造函数 SingleObject() 是不可见的
      //SingleObject object = new SingleObject();
 
      //获取唯一可用的对象
      SingleObject object = SingleObject.getInstance();
 
      //显示消息
      object.showMessage();

      Singleton instance = Singleton.getInstance();
      Singleton instance2 = Singleton.getInstance();
      System.out.println(instance);
      System.out.println(instance2);
   }
}